/** 通用表格接口*/

/** 表格单元为链接时的接口 */
interface IOptions {
  /** 链接按钮类型 */
  type?: string
  /** 链接按钮是否显示下划线 */
  underline?: boolean
  /** 链接按钮是否禁用 */
  disabled?: boolean
  /** 链接按钮是否显示图标 */
  iconShow?: boolean
  /** 链接按钮图标链接 */
  iconHref?: any
}

/** 表格操作按钮配置 */
interface IBtnList extends IOptions {
  /** 操作按钮显示内容 */
  label?: string
  /**
   * 操作按钮自定义显示内容
   * @param row 当前行数据
   * @returns {string}
   */
  vauleGetter?: (row: any) => string
  /**
   * 操作按钮点击事件
   * @param row 当前行数据
   * @returns
   */
  clickHandle?: (row: any) => void
  /**
   * 当前按钮是否禁用
   * @param row 当前行数据
   * @returns {boolean}
   */
  disabledGetter?: (row: any) => boolean
}

/** 表格列配置*/
interface ITableColumn {
  /** 匹配的字段 */
  prop: string
  /** 显示的字段 */
  label: string
  /** 列宽 */
  width?: number | string
  /** 最小列宽 */
  minWidth?: number | string
  /** 列对齐方式 */
  align?: 'left' | 'center' | 'right'
  /** 文字超出是否气泡展示 */
  showOverflowTooltip?: boolean
  /** 列类型 - ETableType */
  type?: string
  /** 列是否固定 */
  fixed?: boolean | 'left' | 'right'
  /**
   * 点击事件
   * @param row 当前行数据
   * @returns
   */
  clickHandle?: (row: any) => void
  /**
   * 自定义显示内容
   * @param row 当前行数据
   * @returns {string}
   */
  vauleGetter?: (row: any) => string
  /** 链接按钮配置 */
  linkBtnOptions?: IOptions
  /** 操作列按钮配置 */
  btnList?: Array<IBtnList>
}

/**
 * 表格配置
 */
interface ITableConfig {
  /** 表格高度 */
  height?: string
  /** 表格列自适应宽度 */
  fit?: boolean
  /** 是否显示序号列 */
  showIndex?: boolean
  /** 是否显示多选 */
  showSelect?: boolean
  /** 是否开启单选 */
  highlightCurrentRow?: boolean
  /** 是否开启斑马纹 */
  stripe?: boolean
}

export type { ITableColumn, ITableConfig }
